Skip to content

Migrate NativeSampleTurboModule to codegen integration - RFC (#56723) - #56723

Closed
christophpurrer wants to merge 1 commit into
react:mainfrom
christophpurrer:export-D104323543
Closed

christophpurrer wants to merge 1 commit into
react:mainfrom
christophpurrer:export-D104323543

Conversation

@christophpurrer

@christophpurrer christophpurrer commented May 8, 2026

Copy link
Copy Markdown
Contributor

Summary:

Replace hand-written spec files for NativeSampleTurboModule with proper codegen integration by removing exclusion rules and configuring the module in package.json. This eliminates ~1600 lines of manual boilerplate (Java, C++, Objective-C) across Android, iOS, and macOS platforms, allowing the codegen system to generate these files automatically from the JavaScript spec.

Changelog: [Internal]

Differential Revision: D104323543

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label May 8, 2026
@meta-codesync

meta-codesync Bot commented May 8, 2026

Copy link
Copy Markdown

@christophpurrer has exported this pull request. If you are a Meta employee, you can view the originating Diff in D104323543.

@facebook-github-tools facebook-github-tools Bot added p: Facebook Partner: Facebook Partner labels May 8, 2026
@meta-codesync meta-codesync Bot changed the title Migrate NativeSampleTurboModule to codegen integration - RFC Migrate NativeSampleTurboModule to codegen integration - RFC (#56723) May 8, 2026
christophpurrer added a commit to christophpurrer/react-native-macos that referenced this pull request May 8, 2026
…6723)

Summary:

Replace hand-written spec files for `NativeSampleTurboModule` with proper codegen integration by removing exclusion rules and configuring the module in `package.json`. This eliminates ~1600 lines of manual boilerplate (Java, C++, Objective-C) across Android, iOS, and macOS platforms, allowing the codegen system to generate these files automatically from the JavaScript spec.

Changelog: [Internal]

Differential Revision: D104323543
christophpurrer added a commit to christophpurrer/react-native-macos that referenced this pull request May 8, 2026
…6723)

Summary:

Replace hand-written spec files for `NativeSampleTurboModule` with proper codegen integration by removing exclusion rules and configuring the module in `package.json`. This eliminates ~1600 lines of manual boilerplate (Java, C++, Objective-C) across Android, iOS, and macOS platforms, allowing the codegen system to generate these files automatically from the JavaScript spec.

Changelog: [Internal]

Differential Revision: D104323543
christophpurrer added a commit to christophpurrer/react-native-macos that referenced this pull request May 8, 2026
…6723)

Summary:

Replace hand-written spec files for `NativeSampleTurboModule` with proper codegen integration by removing exclusion rules and configuring the module in `package.json`. This eliminates ~1600 lines of manual boilerplate (Java, C++, Objective-C) across Android, iOS, and macOS platforms, allowing the codegen system to generate these files automatically from the JavaScript spec.

Changelog: [Internal]

Differential Revision: D104323543
christophpurrer added a commit to christophpurrer/react-native-macos that referenced this pull request May 8, 2026
…6723)

Summary:

Replace hand-written spec files for `NativeSampleTurboModule` with proper codegen integration by removing exclusion rules and configuring the module in `package.json`. This eliminates ~1600 lines of manual boilerplate (Java, C++, Objective-C) across Android, iOS, and macOS platforms, allowing the codegen system to generate these files automatically from the JavaScript spec.

Changelog: [Internal]

Differential Revision: D104323543
…6723)

Summary:

Replace hand-written spec files for `NativeSampleTurboModule` with proper codegen integration by removing exclusion rules and configuring the module in `package.json`. This eliminates ~1600 lines of manual boilerplate (Java, C++, Objective-C) across Android, iOS, and macOS platforms, allowing the codegen system to generate these files automatically from the JavaScript spec.

Changelog: [Internal]

Differential Revision: D104323543
@meta-codesync meta-codesync Bot closed this in 734f5c1 May 11, 2026
@facebook-github-tools facebook-github-tools Bot added the Merged This PR has been merged. label May 11, 2026
@meta-codesync

meta-codesync Bot commented May 11, 2026

Copy link
Copy Markdown

This pull request has been merged in 734f5c1.

@react-native-bot

Copy link
Copy Markdown
Collaborator

This pull request was successfully merged by @christophpurrer in 734f5c1

When will my fix make it into a release? | How to file a pick request?

meta-codesync Bot pushed a commit that referenced this pull request Sep 16, 2026
…58516)

Summary:
#56723 moved `SampleTurboModule`'s `unstableRequiresMainQueueSetup` annotation from rn-tester's `codegenConfig` into react-native's. Codegen collects these annotations from every library and emits them into `RCTUnstableModulesRequiringMainQueueSetupProvider`, so every app now lists `SampleTurboModule`, and `RCTInstance` eagerly requests it at startup. The native class only ships with rn-tester, so every other app logs "Unable to find module for SampleTurboModule", which is a redbox in development.

The annotation is keyed by module name and does not need to live next to the spec, so move it back to rn-tester, the one app that links the class. Running the generator with react-native alone now yields the six core modules; adding rn-tester's config yields the same list plus `SampleTurboModule`.

Changelog:
[iOS] [Fixed] - Stop apps from requesting the sample TurboModule that only rn-tester provides

Pull Request resolved: #58516

Test Plan:
Ran `generateUnstableModulesRequiringMainQueueSetupProvider` against `packages/react-native` alone and against `packages/react-native` plus `packages/rn-tester`:

rn-only: AccessibilityManager, Appearance, AppState, DeviceInfo, PlatformConstants, StatusBarManager
with-rn-tester: AccessibilityManager, Appearance, AppState, DeviceInfo, PlatformConstants, StatusBarManager, SampleTurboModule

Reproduced the redbox in Expo Go on 0.87.0, 0.87.1 and 0.88.0-rc.0.

Reviewed By: cipolleschi

Differential Revision: D120190436

Pulled By: christophpurrer

fbshipit-source-id: b1991cca7d8bce889e57866eb507e4259f61425f
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. fb-exported Merged This PR has been merged. meta-exported p: Facebook Partner: Facebook Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants